package com.meng.netty.constant;

import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;


/**
 * 注解常量
 *
 * 注解类的成员默认就是 public static final 修饰的
 *
 * 好处：对比普通常量更安全,使用 @PointOfSaleConstant 做参数修饰 则参数只能传入PointOfSaleConstant中的定义的成员
 *
 * 保证了类型安全 https://blog.csdn.net/my_truelove/article/details/70519234
 *
 * @author MENG
 * @version 2018/3/23
 * @see
*/
@Retention(RetentionPolicy.SOURCE)
public @interface PointOfSaleConstant
{
    int LEAST_PROTOCOL_LENGTH = 13;          // 总消息长度最少 13个字节 头 10（头+类型+长度）+ 尾 3

    int UPLOAD_CONSUME_RECORD_LENGTH = 268;  //一条记录长 268 字节

    int MESSAGE_HEAD_TYPE_LENGTH = 10;  //头

    int MESSAGE_END = 3;

    String MESSAGE_HEAD = "$nmlgd$";         // 消息头

    int READ_IDLE_TIME = 20;                 // 读去超时  当20秒没有读操作  断开连接

    List<Future> FUTURE_LIST = new ArrayList<>();

    /**
     *  消息类型
     */
    byte HEART_BEAT = '0';                    //心跳

    byte CONSUME_RECORD = '1';                //消费记录

    byte BLACK_LIST_RECORD = '2';             //黑名单
}
